function segmentsIntr(a, b, c, d){  
  
/** 1 解线性方程组, 求线段交点. **/  
// 如果分母为0 则平行或共线, 不相交  
    var denominator = (b.lat - a.lat)*(d.lng - c.lng) - (a.lng - b.lng)*(c.lat - d.lat);  
    if (denominator==0) {  
        return false;  
    }  
   
// 线段所在直线的交点坐标 (lng , lat)      
    var lng = ( (b.lng - a.lng) * (d.lng - c.lng) * (c.lat - a.lat)   
                + (b.lat - a.lat) * (d.lng - c.lng) * a.lng   
                - (d.lat - c.lat) * (b.lng - a.lng) * c.lng ) / denominator ;  
    var lat = -( (b.lat - a.lat) * (d.lat - c.lat) * (c.lng - a.lng)   
                + (b.lng - a.lng) * (d.lat - c.lat) * a.lat   
                - (d.lng - c.lng) * (b.lat - a.lat) * c.lat ) / denominator;  
  
/** 2 判断交点是否在两条线段上 **/  
    if (  
        // 交点在线段1上  
        (lng - a.lng) * (lng - b.lng) <= 0 && (lat - a.lat) * (lat - b.lat) <= 0  
        // 且交点也在线段2上  
         && (lng - c.lng) * (lng - d.lng) <= 0 && (lat - c.lat) * (lat - d.lat) <= 0  
        ){  
  
        // 返回交点p  
        return {  
                lng :  lng,  
                lat :  lat  
            }  
    }  
    //否则不相交  
    return false  
  
}  
